package ec.edu.ups.cidi.siia.plamdep.moduloweb.servicio;

import java.util.ArrayList;
import java.util.UUID;
import javax.annotation.PostConstruct;
import javax.ejb.DependsOn;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.inject.Inject;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.jms.ColaAnalisisClient;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.jms.SolicitudAnalisisJMS;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.modeloWS.Respuesta;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.modeloWS.SolicitudAnalisis;
import ec.edu.ups.cidi.siia.plamdep.moduloweb.utils.Fechas;

@Singleton
//@Startup
//@DependsOn("ColaAnalisisClient")
public class TestAnalisis {

	
		//@Inject ProcesamientoPeticiones process;
		@Inject ColaAnalisisClient jms;
		
		Runnable r=new Runnable() {
			
			
			public void run() {
				try {
					Thread.sleep(3000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				 /**Se definen las fuentes locales**/
				 ArrayList<String> fuentes=new ArrayList<String>();
					fuentes.add("/opt/test/fuente1.txt");
					fuentes.add("/opt/test/fuente2.txt");
					fuentes.add("/opt/test/fuente3.txt");
					
				String id= UUID.randomUUID().toString();
					 
				/**Se definen los parametros para analisis*/
				SolicitudAnalisis sol=new SolicitudAnalisis();
				sol.setBusquedaLocal(true);
				sol.setBusquedaWeb(true);
				sol.setFuentesLocales(fuentes);
				sol.setCodigoAlgoritmoComparacion("VectorSpace");
				sol.setCodigoAlgoritmoExtraccion("Ngramas");
				sol.setRutaArchivoSospechoso("/opt/test/Sospechoso.txt");
				sol.setMailUsuario("hfajardo@jasoft.ec");
				sol.setNumeroImg(0);
				
				analizar(sol);
				
			}
		};
		
		
		@PostConstruct
	    public void iniciarTestOffline() 
	    {
		    
		   new Thread(r).start();
	    }
	 
		
		
		
		
		
		/**Este metodo esta replicado del WS*/
		public Respuesta analizar(SolicitudAnalisis m)
		{	
			Respuesta respuesta=new Respuesta();
			try
			{
				String id= UUID.randomUUID().toString();
				
				
				System.out.println("Solicitud recibida....");
				
				SolicitudAnalisisJMS sol=new SolicitudAnalisisJMS();
				sol.setBusquedaLocal(m.isBusquedaLocal());
				sol.setBusquedaWeb(m.isBusquedaWeb());
				sol.setCodigoAlgoritmoComparacion(m.getCodigoAlgoritmoComparacion());
				sol.setCodigoAlgoritmoExtraccion(m.getCodigoAlgoritmoExtraccion());
				sol.setFuentesLocales(m.getFuentesLocales());
				sol.setMailUsuario(m.getMailUsuario());
				sol.setNumeroImg(m.getNumeroImg());
				sol.setRutaArchivoSospechoso(m.getRutaArchivoSospechoso());
				sol.setCodSolicitud(id);
				sol.setFecha(new Fechas().fechaActual);
				sol.setHora(new Fechas().horaActual);
				
				jms.enviarMensaje(sol);
				respuesta.setCodigoPeticion(id);
				respuesta.setEstado(1);
				respuesta.setObservacion("Analisis puesto en cola");
			}catch(Exception e)
			{
				respuesta.setEstado(0);
				respuesta.setObservacion("Analisis fallido");
			}
			return respuesta; 		
		}

}
